/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conexion;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Miguel Pichipillan S
 */
public class Ejecutar {
    
    List<String> dmls;
    
    public Ejecutar () {
        this.dmls = new ArrayList();
    }
    
    public boolean ejecutarTransaccion () {
        if(dmls.isEmpty()) {
            JOptionPane.showMessageDialog(null, "No existen DMLs para ser ejecutados", "Precaucion", JOptionPane.INFORMATION_MESSAGE);
            return false;
        }else {
            return this.iniciarTransaccion();
        }
    }
    
    
    private boolean iniciarTransaccion () {
    Coneccion coneccion = new Coneccion();    
        coneccion.crearConeccion();
        int cantidadQuery = this.dmls.size();
        int i;
        int cont=0;
        boolean resultado=false;
        
            try {
                coneccion.getEstamento().executeUpdate("BEGIN;");
                for(i=0;i<cantidadQuery;i++) {
                    cont += coneccion.getEstamento().executeUpdate(this.dmls.get(i));
                }
                
                if(cont!=cantidadQuery) {
                    coneccion.getEstamento().executeUpdate("ROLLBACK;");
                } else {
                    coneccion.getEstamento().executeUpdate("COMMIT;");
                    resultado= true;
                }
            } catch (SQLException ex) {
                JOptionPane.showMessageDialog(null, "Error al realizar la inserción de los datos\n" + ex.toString(), "Error", JOptionPane.ERROR_MESSAGE);
            }
            coneccion.cerrarConeccion();
            return resultado;
    }
    
    
    
    public void agregarDml (String query) {
        this.dmls.add(query);
    }
}
